﻿using System;

namespace Program10
{
    class Program
    {
        //const的值是在编译期间确定的，因此只能在声明时通过常量表达式指定其值。而static readonly是在运行时计算出其值的

        //static readonly是动态常量，常量的值在编译期间不解析，所以开始都是默认值，X与Y都是int类型，故都是0。
        //而在程序执行到X=Y*10;所以X=0*10=0,程序接着执行到Y=10这句时候，才会真正的Y的初值10赋给Y。

        //readonly(运行时确定值)
        static readonly int X = Y - 10;
        static readonly int Y = 10;
        static void Main(string[] args)
        {
            //变量
            //var num = 10;
            //num = 20;
            //Console.WriteLine("变量:{0}", num);

            ////常量:在程序中不能改变的
            //const int num1 = 30;
            ////常量不能赋值
            ////num1 =20;
            //Console.WriteLine("常量{0}", num1);
            Console.WriteLine("X is {0},Y is {1}", X, Y);


            //const编译常量(编译时确定值)
            const int B = 10;
            const int A = B * 10;
            Console.WriteLine("A is {0},B is {1}", A,B);
        }
    }
}
